#include <REGX52.h>
#include "Delay.h"

//P3^5表示P3的第5位
sbit MatrixLED_SER = P3^4;	//SER, 写入的1位数据
sbit MatrixLED_RCLK = P3^5;   	//RCLK, 上升沿锁存，置1发送8位数据
sbit MatrixLED_SRCLK = P3^6;	//SRCLK, 上升沿移位，置1数据往下移

//点阵屏列选择的寄存器
#define MatrixLEDColumn P0

/**
  * @brief	74HC595发送一个字节数据，可控制点阵屏的行
  * @parm	Byte:要发送的字节数据
  * @retval	无
  */
void _74HC595_WriteByte(unsigned char Byte)
{
	int i = 0;
	for(i = 0; i < 8; ++i)
	{
		MatrixLED_SER = Byte & (0x80 >> i);
		MatrixLED_SRCLK = 1;//数据移位
		MatrixLED_SRCLK = 0;
	}
	MatrixLED_RCLK = 1;//发送数据
	MatrixLED_RCLK = 0;
}

/**
  * @brief	LED点阵屏显示一列数据
  * @parm	
  * @retval	无
  */
void MatrixLED_ShowColumn(unsigned char Column, unsigned char Data)
{
	_74HC595_WriteByte(Data);
	MatrixLEDColumn = ~(0x80 >> Column);
	Delayms(1);
	MatrixLEDColumn = 0xFF;//消影
}
/**
  * @brief	初始化74HC595，初始化点阵屏
  * @parm	无
  * @retval	无
  */
void MatrixLED_Init()
{
	MatrixLED_RCLK = 0;
	MatrixLED_SRCLK = 0;
}






